var pattern_number = /^(?:[1-9]\d*|0)$/;   //匹配正整数
var pattern_number_f = /^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$/;  //匹配小数
var pattern_ip = /^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d))))$/; //ip
var pattern_ip_port = /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9]):\d{0,5}$/;
/*var pattern_string = /^(([\u4E00-\u9FA5a-zA-Z0-9_\[\]\_\.\:\;\/\>\<\=\-\(\)][\u4E00-\u9FA5a-zA-Z0-9_\[\]\_\.\:\;\/\>\<\=\-\(\)]{0,254}))$/;  //常规字符串*/
var b = new Base64();


$(function () {

    $('.input_edit').css('width','250px');
    jQuery.ajaxSetup({
        statusCode: {
            401: function () {
                top.location.reload();

            }
        }
    });

});

function check(value, flag)  //根据类型进行正则验证
{
    switch (flag) {
        case 'ddc_number':
            return (pattern_number.test(value) || pattern_number_f.test(value) );
        case 'ddc_ip':
            return (pattern_ip.test(value) && (!(value == "0.0.0.0") && !(value == "255.255.255.255")));
        case 'ddc_ip_port':
            return (pattern_ip_port.test(value) && (!(value.substring(0, 7) == "0.0.0.0") && !(value.substring(0, 15) == "255.255.255.255")));
        case 'ddc_string':
            /*return pattern_string.test(value);*/
            return true;
            break;
    }
}

function check_range(value, flag, min, max)   //根据类型 仅校验数值和字符串的范围
{
    switch (flag) {
        case 'ddc_number':
            if (value >= min && value <= max) {
                return true;
            }
            else {
                return false;
            }
        case 'ddc_ip':
            return true;
        case 'ddc_ip_port':
            return true;
        case 'ddc_string':
            if (value.length >= min && value.length <= max) return true;
            else return false;
            break;
    }
}

function input_tip(flag, min, max) {
    switch (flag) {
        case 'ddc_number':
            return '请填写范围为【' + min + '-' + max + '】的数值';
        case 'ddc_ip':
            return '请填写正确格式的IP地址,不包含0.0.0.0，255.255.255.255';
        case 'ddc_ip_port':
            return '请填写正确的ip：端口,IP部分不包含0.0.0.0，255.255.255.255';
        case 'ddc_string':
            return '请填写长度范围为【' + min + '-' + max + '】的字符串';
            break;
    }
}
function m_edit(object) {
   /* alert($(object).siblings('.sendConfig'));*/
    $(object).parent().parent().css('background', '#82af6f');
    //遍历是否其他行存在编辑输入框
    $(object).parent().parent().siblings().each(function () {

        if (!$(this).find('.input_edit').hasClass('hidden')) {
            $(this).find('.input_edit').addClass('hidden');
            $(this).find('span').removeClass('hidden');
            $(this).css('background', '#fff');
            $(this).find('.hide_span').each(function () {

                $(this).text($(this).next('.input_edit').attr('data-original'));
                $(this).next('.input_edit').val($(this).next('.input_edit').attr('data-original'));  //取消后保存原始值

            });

            $(this).find('._cancel').hide();
            $(this).find('._edit').show();
            if($(this).find('.sendConfig'))
            {
                $(this).find('.sendConfig').show();
            }

            $(this).find('._save').hide();

        }
    });
    var td_len = $(object).parent().parent().find('td').length; //获取子节点-单元格数量
    $(object).parent().parent().find('td').each(function () {  //遍历每一个单元格
        var index = $(this).index();
        if (index == td_len - 2) {
            $(this).find('span').addClass('hidden');
            $(this).find('.input_edit').removeClass('hidden');
        }
    });

    $(object).hide();
    if($(object).siblings('.sendConfig'))
    {
        $(object).siblings('.sendConfig').hide();
    }

    $(object).siblings('._save').show();
    $(object).siblings('._cancel').show();
}

function m_save(object) {

    var td_len = $(object).parent().parent().find('td').length;


    $(object).parent().prev().find('.hide_span').each(function () {

        var update_val = $(this).next('.input_edit').val();  //编辑项更新的值
        var original_val = $(this).next('.input_edit').attr('data-original'); //编辑项初始值
        var type_flag = $(this).next('.input_edit').attr('data-type'); //编辑项类型
        var max = parseInt($(this).next('.input_edit').attr('data-max')); //范围 最大值
        var min = parseInt($(this).next('.input_edit').attr('data-min')); //范围 最小值
        var cfgItem = $(this).next('.input_edit').attr('data-cfgItem');
        var devType = $(this).next('.input_edit').attr('data-devType');
        var cfgType = $(this).next('.input_edit').attr('data-cfgType');
        var moduleId = $(this).next('.input_edit').attr('data-moduleId');
        var ip;
        var node;
        var devId;
        var url = "";
        if (devType != 0) {
            node = $(this).next('.input_edit').attr('data-node');
            if (cfgType == 'private') {
                ip = $(this).next('.input_edit').attr('data-ip');
                devId = $(this).next('.input_edit').attr('data-devId');
                url = "&node=" + node + "&ip=" + ip + "&devId=" + devId + "&devType=" + devType + "&cfgType=" + cfgType + "&moduleId=" + moduleId;
            } else if (cfgType == 'default') {
                url = "&node=" + node + "&devType=" + devType + "&cfgType=" + cfgType + "&moduleId=" + moduleId;
            }
        } else {
            url = "&devType=0&cfgType=all" + "&moduleId=" + moduleId;
        }
        if (update_val == "") {
            alert("字段不能为空值，若想保存为空值提交，请填写'NULL'");
            $(this).text($(this).next('.input_edit').attr('data-original'));
            $(this).next('.input_edit').val($(this).next('.input_edit').attr('data-original'));  //取消后保存原始值
        }
        else if (update_val == "NULL")  //如果填写值为NULL即空值，不进行校验
        {
            if (update_val == original_val) {
                alert('编辑前后字段值相同');
                $(object).parent().prev().find('.hide_span').each(function () {   //不提交更改后的值，不关闭输入框

                    $(this).text($(this).next('.input_edit').attr('data-original'));
                    $(this).next('.input_edit').val($(this).next('.input_edit').attr('data-original'));  //取消后保存原始值

                });
            }
            else {
                $(this).text(update_val);
                var value1 = $(this).next('.input_edit').val();
                var id = $(this).next('.input_edit').attr('data-id');
                var flagNULL = 0;  //0----下发失败；1----下发成功
                $.ajax({
                    type: "get",
                    url: ctx + "/config/save",
                    data: "id=" + id + "&devId=" + devId + "&value=" + value1 + "&cfgItem=" + cfgItem + url,//提交表单，相当于/config/save?ID=xxx&value=xxx
                    success: function (msg) {
                        dialog(msg.op_code, b.decode(msg.op_msg));
                        if(devType!=2){
                            setTimeout(function(){window.location.href=ctx+'/config/private?node='+node+'&ip='+ip+'&moduleId='+moduleId+'&devId='+devId;},3000);
                        }else{
                            setTimeout(function(){window.location.href=ctx+'/config/module/all?node='+node+'&ip='+ip+'&moduleId='+moduleId+'&devId='+devId;},3000);
                        }
                        //if (msg == "success") {
                        //    flagNULL = 1;
                        //    swal("编辑成功!", "You clicked the button!", "success");
                        //}
                        //if (msg == "error") {
                        //    flagNULL = 0;
                        //    swal("下发消息失败，配置项已入库", "You clicked the button!", "error");
                        //    /*var opts = {
                        //        title: '下发消息失败',
                        //        text: '下发消息失败.',
                        //        hide: false,
                        //        type: "error",
                        //        buttons: {
                        //            sticker: false
                        //        },
                        //
                        //    };
                        //    new PNotify(opts);*/
                        //}
                    }   //操作成功后的操作！msg是后台传过来的值
                });


                if (flagNULL == 1) {
                    $(this).next('.input_edit').attr('data-original', update_val);
                    $(object).parent().parent().find('td').each(function () {  //遍历每一个单元格
                        var index = $(this).index();
                        if (index == td_len - 2) {
                            $(this).find('.input_edit').addClass('hidden');
                            $(this).find('span').removeClass('hidden');
                        }
                    });

                    $(object).hide();
                    if($(object).siblings('.sendConfig'))
                    {
                        $(object).siblings('.sendConfig').show();
                    }
                    $(object).siblings('._edit').show();
                    $(object).siblings('._cancel').hide();
                    $(object).parent().parent().css('background', '#fff');
                }
                else if (flagNULL == 0) {
                    /* $(object).parent().prev().find('.hide_span').each(function () {   //不提交更改后的值，不关闭输入框

                     $(this).text($(this).next('.input_edit').attr('data-original'));
                     $(this).next('.input_edit').val($(this).next('.input_edit').attr('data-original'));  //取消后保存原始值

                     });*/
                    $(this).next('.input_edit').attr('data-original', update_val);
                    $(object).parent().parent().find('td').each(function () {  //遍历每一个单元格
                        var index = $(this).index();
                        if (index == td_len - 2) {
                            $(this).find('.input_edit').addClass('hidden');
                            $(this).find('span').removeClass('hidden');
                        }
                    });

                    $(object).hide();
                    if($(object).siblings('.sendConfig'))
                    {
                        $(object).siblings('.sendConfig').show();
                    }
                    $(object).siblings('._edit').show();
                    $(object).siblings('._cancel').hide();
                    $(object).parent().parent().css('background', '#fff');

                }

            }


        }

        else if (!(check(update_val, type_flag) && check_range(update_val, type_flag, min, max)))  //不为空值时校验失败
        {
            if (type_flag == "ddc_string") {
                if (check(update_val, type_flag) == true && check_range(update_val, type_flag, min, max) == false) {
                    alert('该字段长度超出合理范围，请填写长度为【' + min + '-' + max + '】的字符串');
                }
                if (check(update_val, type_flag) == false && check_range(update_val, type_flag, min, max) == true) {
                    alert('该字段格式不正确');
                }
                if (check(update_val, type_flag) == false && check_range(update_val, type_flag, min, max) == false) {
                    alert('该字段格式不正确，请填写长度范围为【' + min + '-' + max + '】的字符串');
                }
            }
            if (type_flag == "ddc_number") {
                if (check(update_val, type_flag) == true && check_range(update_val, type_flag, min, max) == false) {
                    alert('该字段数值超出合理范围，请填写范围为【' + min + '-' + max + '】的数值');
                }
                if (check(update_val, type_flag) == false && check_range(update_val, type_flag, min, max) == true) {
                    alert('该字段格式不正确');
                }
                if (check(update_val, type_flag) == false && check_range(update_val, type_flag, min, max) == false) {
                    alert('该字段格式不正确，请填写范围为【' + min + '-' + max + '】的数字');
                }
            }
            if (type_flag == "ddc_ip") {
                alert('该字段格式不正确，请填写正确格式的IP地址,不包含0.0.0.0，255.255.255.255');
            }
            if (type_flag == "ddc_ip_port") {
                alert('该字段格式不正确，请填写正确的ip：端口,IP部分不包含0.0.0.0，255.255.255.255');
            }
            /*$(this).next('.input_edit').val(original_val);*/
        }

        else {  //不为空值时校验通过
            if (update_val == original_val) {
                alert('编辑前后字段值相同');
                $(object).parent().prev().find('.hide_span').each(function () {   //不提交更改后的值，不关闭输入框

                    $(this).text($(this).next('.input_edit').attr('data-original'));
                    $(this).next('.input_edit').val($(this).next('.input_edit').attr('data-original'));  //取消后保存原始值

                });
            }
            else {
                var s = confirm("确认更改该配置项吗");

                if (s) {
                    $(this).text(update_val);
                    var value = $(this).next('.input_edit').val();
                    var id = $(this).next('.input_edit').attr('data-id');
                    var flag = 0;  //0----下发失败；1----下发成功
                    $.ajax({
                        type: "get",
                        url: ctx + "/config/save",
                        data: "id=" + id + "&value=" + value + "&cfgItem=" + cfgItem + url,//提交表单，相当于/config/save?ID=xxx&value=xxx
                        success: function (msg) {
                            dialog(msg.op_code, b.decode(msg.op_msg));
                            if(devType!=2){
                                setTimeout(function(){window.location.href=ctx+'/config/private?node='+node+'&ip='+ip+'&moduleId='+moduleId+'&devId='+devId;},3000);
                            }else{
                                setTimeout(function(){window.location.href=ctx+'/config/module/all?node='+node+'&ip='+ip+'&moduleId='+moduleId+'&devId='+devId;},3000);
                            }
                            //
                            //setTimeout(function(){window.parent.location.reload(true);},3000);

                        }   //操作成功后的操作！msg是后台传过来的值
                    });
                    if (flag == 1) {
                        $(this).next('.input_edit').attr('data-original', update_val);
                        $(object).parent().parent().find('td').each(function () {  //遍历每一个单元格
                            var index = $(this).index();
                            if (index == td_len - 2) {
                                $(this).find('.input_edit').addClass('hidden');
                                $(this).find('span').removeClass('hidden');
                            }
                        });

                        $(object).hide();
                        $(object).siblings('._edit').show();
                        if($(object).siblings('.sendConfig'))
                        {
                            $(object).siblings('.sendConfig').show();
                        }
                        $(object).siblings('._cancel').hide();
                        $(object).parent().parent().css('background', '#fff');
                    }
                    else if (flag == 0) {
                        $(this).next('.input_edit').attr('data-original', update_val);
                        $(object).parent().parent().find('td').each(function () {  //遍历每一个单元格
                            var index = $(this).index();
                            if (index == td_len - 2) {
                                $(this).find('.input_edit').addClass('hidden');
                                $(this).find('span').removeClass('hidden');
                            }
                        });

                        $(object).hide();
                        $(object).siblings('._edit').show();
                        if($(object).siblings('.sendConfig'))
                        {
                            $(object).siblings('.sendConfig').show();
                        }
                        $(object).siblings('._cancel').hide();
                        $(object).parent().parent().css('background', '#fff');
                        /* $(object).parent().prev().find('.hide_span').each(function () {   //不提交更改后的值，不关闭输入框

                         $(this).text($(this).next('.input_edit').attr('data-original'));
                         $(this).next('.input_edit').val($(this).next('.input_edit').attr('data-original'));  //取消后保存原始值

                         });*/
                    }

                }
                else {
                    $(object).parent().prev().find('.hide_span').each(function () {   //不提交更改后的值，不关闭输入框

                        $(this).text($(this).next('.input_edit').attr('data-original'));
                        $(this).next('.input_edit').val($(this).next('.input_edit').attr('data-original'));  //取消后保存原始值

                    });
                }
            }
        }

    });

}
function m_cancel(object) {
    $(object).parent().parent().css('background', '#fff');
    var td_len = $(object).parent().parent().find('td').length;
    $(object).parent().parent().find('td').each(function () {  //遍历每一个单元格
        var index = $(this).index();
        if (index == td_len - 2) {
            $(this).find('.input_edit').addClass('hidden');
            $(this).find('span').removeClass('hidden');
        }
    });

    $(object).parent().prev().find('.hide_span').each(function () {

        $(this).text($(this).next('.input_edit').attr('data-original'));
        $(this).next('.input_edit').val($(this).next('.input_edit').attr('data-original'));  //取消后保存原始值

    });
    $(object).hide();
    $(object).siblings('._edit').show();
    if($(object).siblings('.sendConfig'))
    {
        $(object).siblings('.sendConfig').show();
    }
    $(object).siblings('._save').hide();
}

